iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
Modern Web

就是要搞懂 JavaScript 啦!系列 第 17

Day17 this 綁定類型:賴上你的一百種方法(?)

  • 分享至 

  • xImage
  •  

呼叫點 & 呼叫堆疊

前面說到,this 綁定的對象與作用域無關,而是決定於與函式如何調用,也就是呼叫時建立的執行環境(Execution context)。

因此在進入 this 的綁定之前,這裡來釐清呼叫點(Call-site)以及建立起執行環境的呼叫堆疊(Call Stack):

function fun1() {
  // 呼叫堆疊:window -> func1
  console.log( "fun1" );
  fun2(); // fun2 的調用點,位於 fun1 的作用域內
}

function fun2() {
  // 呼叫堆疊:window -> func1 -> func2
  console.log( "fun2" );
  fun3(); // fun3 的調用點,位於 fun2 的作用域內
}

function fun3() {
  // 呼叫堆疊:window -> func1 -> func2 -> func3
  console.log( "fun3" );
}

fun1(); // fun1 的調用點,位於全域作用域

內建有開發者工具的瀏覽器,如 chrome 的呼叫堆疊在「Source」頁籤內,當程式執行時,如果有下中斷點,就能夠在「Call Stack」裡面查看當前的呼叫堆疊。


this 綁定類型

上一篇說明了為什麼要有 this ,也釐清調用點和調用環境的判別後,從下一篇開始依序說明,this 擁有的綁定的方法:

  • 默認綁定(Default Binding)
  • 隱含綁定(Implicit Binding)
  • 明確綁定(Explicit Binding)
    • 硬绑定(Hard Binding)
    • 軟綁定(Softening Binding)
  • new 綁定(new Binding)
  • 箭頭函式綁定(Arrow-function Binding)(ES6+)

參考資料


上一篇
Day16 this:你說的這個到底是哪個?
下一篇
Day18 this 默認綁定:總之就是認定你了!
系列文
就是要搞懂 JavaScript 啦!73
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言